import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { exec } from 'node:child_process';
import { promisify } from 'node:util';
import { app, BrowserWindow, dialog, ipcMain } from 'electron'

const __dirname = path.dirname(fileURLToPath(import.meta.url))
const execPromise = promisify(exec)

let win

function createWindow() {
  win = new BrowserWindow({
    width: 1920,
    height: 1080,
    webPreferences: {
      nodeIntegration: false, // 推荐设为 false 以提高安全性
      contextIsolation: true,  // 推荐设为 true 以提高安全性
      preload: path.join(__dirname, 'preload.js'), // 添加 preload 脚本
      webSecurity: false, // 禁用同源策略
      allowRunningInsecureContent: true, // 允许不安全内容
    },
  })

  // 开发环境下加载 Vite 开发服务器
  if (process.env.NODE_ENV === 'development') {
    win.loadURL('http://localhost:3000')
  }
  else {
    // 生产环境下加载打包后的文件
    win.loadFile(path.join(__dirname, '../dist/index.html'))
  }

  // 打开开发者工具（可选）
  win.webContents.openDevTools()
}

ipcMain.handle('ffmpeg-exec-promise', async (_, command) => {
  return await execPromise(command);
});

ipcMain.handle('ffmpeg-exec', async (_, command, callback) => {
  return exec(command, callback);
});

// 注册 IPC 处理函数
ipcMain.handle('open-folder-dialog', async () => {
  const result = await dialog.showOpenDialog({
    properties: ['openDirectory']
  });

  if (!result.canceled && result.filePaths.length > 0) {
    return result.filePaths[0];
  }
  return null;
});

app.whenReady().then(createWindow)

// 所有窗口关闭时退出应用（macOS 除外）
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

// macOS 下点击 Dock 图标重新打开窗口
app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
})
